diff -Nur a/drivers/net/wireless/rtl8189fs/core/rtw_ieee80211.c b/drivers/net/wireless/rtl8189fs/core/rtw_ieee80211.c
--- a/drivers/net/wireless/rtl8189fs/core/rtw_ieee80211.c	2016-02-25 06:58:52.000000000 +0100
+++ b/drivers/net/wireless/rtl8189fs/core/rtw_ieee80211.c	2016-09-27 21:44:26.470787346 +0200
@@ -1467,17 +1467,22 @@
 		goto func_exit;
 	}
 
+#if 0
 	if (check_local_bit == _TRUE) {
 		if (mac_addr[0] & BIT1) {
 			res = _TRUE;
 			goto func_exit;
 		}
 	}
+#else
+	(void) check_local_bit;
+#endif
 
 func_exit:
 	return res;
 }
 
+extern void wifi_hwaddr_from_chipid(u8 *addr);
 extern char* rtw_initmac;
 /**
  * rtw_macaddr_cfg - Decide the mac address used
@@ -1510,6 +1515,11 @@
 		goto err_chk;
 #endif
 
+#ifdef CONFIG_PLATFORM_ARM_SUN8I
+	wifi_hwaddr_from_chipid(mac);
+	goto err_chk;
+#endif
+
 	/* Use the mac address stored in the Efuse */
 	if (hw_mac_addr) {
 		_rtw_memcpy(mac, hw_mac_addr, ETH_ALEN);
